/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DataAccess.entity;

import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.*;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author Domenico
 */
@Entity
@Table(name = "clientefornitore")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Clientefornitore.findAll", query = "SELECT c FROM Clientefornitore c"),
    @NamedQuery(name = "Clientefornitore.findByIdClienteFornitore", query = "SELECT c FROM Clientefornitore c WHERE c.idClienteFornitore = :idClienteFornitore"),
    @NamedQuery(name = "Clientefornitore.findByPartitaIVA", query = "SELECT c FROM Clientefornitore c WHERE c.partitaIVA = :partitaIVA"),
    @NamedQuery(name = "Clientefornitore.findByCodiceFiscale", query = "SELECT c FROM Clientefornitore c WHERE c.codiceFiscale = :codiceFiscale"),
    @NamedQuery(name = "Clientefornitore.findByDenominazione", query = "SELECT c FROM Clientefornitore c WHERE c.denominazione = :denominazione"),
    @NamedQuery(name = "Clientefornitore.findByNomeTitolare", query = "SELECT c FROM Clientefornitore c WHERE c.nomeTitolare = :nomeTitolare"),
    @NamedQuery(name = "Clientefornitore.findByCognomeTitolare", query = "SELECT c FROM Clientefornitore c WHERE c.cognomeTitolare = :cognomeTitolare"),
    @NamedQuery(name = "Clientefornitore.findByDataNascita", query = "SELECT c FROM Clientefornitore c WHERE c.dataNascita = :dataNascita"),
    @NamedQuery(name = "Clientefornitore.findBySesso", query = "SELECT c FROM Clientefornitore c WHERE c.sesso = :sesso"),
    @NamedQuery(name = "Clientefornitore.findByNumeroDoc", query = "SELECT c FROM Clientefornitore c WHERE c.numeroDoc = :numeroDoc"),
    @NamedQuery(name = "Clientefornitore.findByCittaDoc", query = "SELECT c FROM Clientefornitore c WHERE c.cittaDoc = :cittaDoc"),
    @NamedQuery(name = "Clientefornitore.findByTipoDoc", query = "SELECT c FROM Clientefornitore c WHERE c.tipoDoc = :tipoDoc"),
    @NamedQuery(name = "Clientefornitore.findByProvinciaDoc", query = "SELECT c FROM Clientefornitore c WHERE c.provinciaDoc = :provinciaDoc"),
    @NamedQuery(name = "Clientefornitore.findByDataDoc", query = "SELECT c FROM Clientefornitore c WHERE c.dataDoc = :dataDoc"),
    @NamedQuery(name = "Clientefornitore.findByVerificaCodiceFiscale", query = "SELECT c FROM Clientefornitore c WHERE c.verificaCodiceFiscale = :verificaCodiceFiscale"),
    @NamedQuery(name = "Clientefornitore.findByTelefono", query = "SELECT c FROM Clientefornitore c WHERE c.telefono = :telefono"),
    @NamedQuery(name = "Clientefornitore.findByEmail", query = "SELECT c FROM Clientefornitore c WHERE c.email = :email"),
    @NamedQuery(name = "Clientefornitore.findByNote", query = "SELECT c FROM Clientefornitore c WHERE c.note = :note"),
    @NamedQuery(name = "Clientefornitore.findByClienteFornitore", query = "SELECT c FROM Clientefornitore c WHERE c.clienteFornitore = :clienteFornitore"),
    @NamedQuery(name = "Clientefornitore.findByData", query = "SELECT c FROM Clientefornitore c WHERE c.data = :data"),
    @NamedQuery(name = "Clientefornitore.findByCittaNascita", query = "SELECT c FROM Clientefornitore c WHERE c.cittaNascita = :cittaNascita")})
public class Clientefornitore implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idClienteFornitore")
    private Integer idClienteFornitore;
    @Basic(optional = false)
    @Column(name = "partitaIVA")
    private String partitaIVA;
    @Column(name = "codiceFiscale")
    private String codiceFiscale;
    @Column(name = "denominazione")
    private String denominazione;
    @Column(name = "nomeTitolare")
    private String nomeTitolare;
    @Column(name = "cognomeTitolare")
    private String cognomeTitolare;
    @Column(name = "dataNascita")
    @Temporal(TemporalType.DATE)
    private Calendar dataNascita;
    @Column(name = "sesso")
    private String sesso;
    @Column(name = "numeroDoc")
    private String numeroDoc;
    @Column(name = "cittaDoc")
    private String cittaDoc;
    @Column(name = "tipoDoc")
    private String tipoDoc;
    @Column(name = "provinciaDoc")
    private String provinciaDoc;
    @Column(name = "dataDoc")
    @Temporal(TemporalType.DATE)
    private Calendar dataDoc;
    @Column(name = "verificaCodiceFiscale")
    private String verificaCodiceFiscale;
    @Column(name = "telefono")
    private String telefono;
    @Column(name = "email")
    private String email;
    @Column(name = "note")
    private String note;
    @Basic(optional = false)
    @Column(name = "clienteFornitore")
    private String clienteFornitore;
    @Column(name = "data")
    @Temporal(TemporalType.DATE)
    private Calendar data;
    @Column(name = "cittaNascita")
    private String cittaNascita;
    @JoinColumn(name = "indirizzoTitolare", referencedColumnName = "idIndirizzo")
    @ManyToOne
    private Indirizzo indirizzoTitolare;
    @JoinColumn(name = "indirizzoFiscale", referencedColumnName = "idIndirizzo")
    @ManyToOne
    private Indirizzo indirizzoFiscale;
    @JoinColumn(name = "indirizzoAttuale", referencedColumnName = "idIndirizzo")
    @ManyToOne
    private Indirizzo indirizzoAttuale;
    @JoinColumn(name = "categoria", referencedColumnName = "nomeCategoria")
    @ManyToOne
    private Categoria categoria;

    public Clientefornitore() {
    }

    public Clientefornitore(Integer idClienteFornitore) {
        this.idClienteFornitore = idClienteFornitore;
    }

    public Clientefornitore(Integer idClienteFornitore, String partitaIVA, String clienteFornitore) {
        this.idClienteFornitore = idClienteFornitore;
        this.partitaIVA = partitaIVA;
        this.clienteFornitore = clienteFornitore;
    }

    public Integer getIdClienteFornitore() {
        return idClienteFornitore;
    }

    public void setIdClienteFornitore(Integer idClienteFornitore) {
        this.idClienteFornitore = idClienteFornitore;
    }

    public String getPartitaIVA() {
        return partitaIVA;
    }

    public void setPartitaIVA(String partitaIVA) {
        this.partitaIVA = partitaIVA;
    }

    public String getCodiceFiscale() {
        return codiceFiscale;
    }

    public void setCodiceFiscale(String codiceFiscale) {
        this.codiceFiscale = codiceFiscale;
    }

    public String getDenominazione() {
        return denominazione;
    }

    public void setDenominazione(String denominazione) {
        this.denominazione = denominazione;
    }

    public String getNomeTitolare() {
        return nomeTitolare;
    }

    public void setNomeTitolare(String nomeTitolare) {
        this.nomeTitolare = nomeTitolare;
    }

    public String getCognomeTitolare() {
        return cognomeTitolare;
    }

    public void setCognomeTitolare(String cognomeTitolare) {
        this.cognomeTitolare = cognomeTitolare;
    }

    public Calendar getDataNascita() {
        return dataNascita;
    }

    public void setDataNascita(Calendar dataNascita) {
        this.dataNascita = dataNascita;
    }

    public String getSesso() {
        return sesso;
    }

    public void setSesso(String sesso) {
        this.sesso = sesso;
    }

    public String getNumeroDoc() {
        return numeroDoc;
    }

    public void setNumeroDoc(String numeroDoc) {
        this.numeroDoc = numeroDoc;
    }

    public String getCittaDoc() {
        return cittaDoc;
    }

    public void setCittaDoc(String cittaDoc) {
        this.cittaDoc = cittaDoc;
    }

    public String getTipoDoc() {
        return tipoDoc;
    }

    public void setTipoDoc(String tipoDoc) {
        this.tipoDoc = tipoDoc;
    }

    public String getProvinciaDoc() {
        return provinciaDoc;
    }

    public void setProvinciaDoc(String provinciaDoc) {
        this.provinciaDoc = provinciaDoc;
    }

    public Calendar getDataDoc() {
        return dataDoc;
    }

    public void setDataDoc(Calendar dataDoc) {
        this.dataDoc = dataDoc;
    }

    public String getVerificaCodiceFiscale() {
        return verificaCodiceFiscale;
    }

    public void setVerificaCodiceFiscale(String verificaCodiceFiscale) {
        this.verificaCodiceFiscale = verificaCodiceFiscale;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public String getClienteFornitore() {
        return clienteFornitore;
    }

    public void setClienteFornitore(String clienteFornitore) {
        this.clienteFornitore = clienteFornitore;
    }

    public Calendar getData() {
        return data;
    }

    public void setData(Calendar data) {
        this.data = data;
    }

    public String getCittaNascita() {
        return cittaNascita;
    }

    public void setCittaNascita(String cittaNascita) {
        this.cittaNascita = cittaNascita;
    }

    public Indirizzo getIndirizzoTitolare() {
        return indirizzoTitolare;
    }

    public void setIndirizzoTitolare(Indirizzo indirizzoTitolare) {
        this.indirizzoTitolare = indirizzoTitolare;
    }

    public Indirizzo getIndirizzoFiscale() {
        return indirizzoFiscale;
    }

    public void setIndirizzoFiscale(Indirizzo indirizzoFiscale) {
        this.indirizzoFiscale = indirizzoFiscale;
    }

    public Indirizzo getIndirizzoAttuale() {
        return indirizzoAttuale;
    }

    public void setIndirizzoAttuale(Indirizzo indirizzoAttuale) {
        this.indirizzoAttuale = indirizzoAttuale;
    }

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idClienteFornitore != null ? idClienteFornitore.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Clientefornitore)) {
            return false;
        }
        Clientefornitore other = (Clientefornitore) object;
        if ((this.idClienteFornitore == null && other.idClienteFornitore != null) || (this.idClienteFornitore != null && !this.idClienteFornitore.equals(other.idClienteFornitore))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "DataAccess.entity.Clientefornitore[ idClienteFornitore=" + idClienteFornitore + " ]";
    }
    
}
